package com.pai4j.user.service.relation;


import com.pai4j.common.bean.PAIPageResponseBeanUtil;
import com.pai4j.domain.vo.response.UserBaseResponseInfoVO;

import java.util.Set;

public interface AccountRelationWrapper {

    /**
     * 订阅/关注
     *
     * @param sourceAccount
     * @param targetAccount
     * @return
     */
    Boolean subscribe(String sourceAccount, String targetAccount);

    /**
     * 取消订阅/关注
     *
     * @param sourceAccount
     * @param targetAccount
     * @return
     */
    Boolean unsubscribe(String sourceAccount, String targetAccount);

    /**
     * 查询账号关系数据
     * 注：走redis
     *
     * @param account
     * @param pageNo
     * @param pageSize
     * @return
     */
    PAIPageResponseBeanUtil<UserBaseResponseInfoVO> listRelations(String account, Integer pageNo, Integer pageSize);

    /**
     * 查询订阅了当前账号的所有账号
     * 如：获取群组下的所有用户、获取公众号的所有订阅用户
     *
     * @param account
     * @return
     */
    Set<String> getAllSubscriber(String account);

    /**
     * 判断用户是否订阅某个用户
     *
     * @param userAccount
     * @param account
     * @return
     */
    boolean isSubscribe(String userAccount, String account);
}
